package cn.chinaunicom.sdsi.frm.workflow.traffic.dao;

/*import cn.chinaunicom.sdsi.frm.workflow.users.model.UserMonitor;*/
import cn.chinaunicom.sdsi.frm.workflow.traffic.pagger.Pagger;
import com.alibaba.fastjson.JSONArray;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by adinlead on 17-7-4.
 */
public interface GeneralDao {


    List<Map<String, Object>> test();
    List<Map<String, Object>> getGridData();
    List<Map<String, Object>> getGridHotData(String type);
    List<Map<String, Object>> getMinLat();
    List<Map<String, Object>> getMinLon();

    /**
     * @param statime 开始时间
     * @param endtime 结束时间
     * @param userid  用户ID
     * @param type    公函类型
     * @return 公函简讯列表
     * @function 获取公函简讯列表
     */
    List<Map<String, Object>> findLitterList(String statime, String endtime, int userid, int type);

    /**
     * @return 省份简讯列表
     * @function 获取省份简讯列表
     */
    List<Map<String, Object>> getProvList();

    /**
     * @param prov 省份代码
     * @return 城市简讯列表
     * @funcion 根据省份获取城市简讯列表
     */
    List<Map<String, Object>> getCityList(String prov);

    /**
     * @param prov 省份代码
     * @return 城市简讯列表
     * @funcion 根据省份获取城市简讯列表
     */
    List<Map<String, Object>> getCityList2(String prov);

    /**
     * @param userid 用户ID
     * @return 基站列表
     * @function 根据用户查询基站列表
     */
    List<Map<String, Object>> getAreaListByUserGroup(Integer userid);

    /**
     * @param area 城市代码
     * @return 基站列表
     * @function 根据城市获取基站列表
     */
    List<Map<String, Object>> getAreaListByCity(String area);

    /**
     * @param city 城市代码
     * @return 地区简讯列表
     * @function 根据城市获取地区简讯列表
     */
    List<Map<String, Object>> getDistrictByCity(String city);

    /**
     * @param ids 根据地区代码列表
     * @return 地区简讯列表
     * @function 根据地区代码列表获得地区简讯列表
     */
    List<Map<String, Object>> findAddressName(Object[] ids);

    /**
     * @param userid 用户ID
     * @return 用户信息
     * @function 根据ID获得用户的信息
     */
    List<Map<String, Object>> getLoginUserInfo(Integer userid);

    /**
     * @param citycode 城市代码
     * @return 关联地区细信息
     * @function 根据城市代码获取关联地区细信息
     */
    Map<String, Object> getLoginUserAddressInfoByCity(String citycode);

    /**
     * @param page         页码
     * @param rows         每页行数
     * @param phone        手机号码
     * @param remark       备注
     * @param org
     *@param state        状态
     * @param admin        查询者是否为管理员
     * @param loginStaffId 查询者ID    @return 红名单用户列表
     * @function 获得红名单用户列表
     */
    Pagger getUserReadList(int page, int rows, String phone, String remark, String org, String state, String create_person, String sel_dis, boolean admin, Integer loginStaffId);

    /**
     * @param page    页码
     * @param rows    每页行数
     * @param phone   手机号码
     * @param remark  备注
     * @param org
     *@param state   状态
     * @param admin   查询者是否为管理员
     * @param staffId 查询者ID    @return 红名单用户列表
     * @function 获得黑名单用户列表
     */
    Pagger getUserBlackList(int page, int rows, String phone, String remark, String org, String state, String create_person, String sel_dis, boolean admin, Integer staffId);

    /**
     * @param page    页码
     * @param rows    每页行数
     * @param state   状态
     * @param dis
     * @param org
     * @param admin   查询者是否为管理员
     * @param staffId 查询者ID
     * @param name
     * @param remark @return 特殊人员分类列表
     * @param staff
     * @function 获得特殊人员分类列表
     */
    Pagger getUserMonitorTypeList(int page, int rows, String state, String dis, String org, boolean admin, Integer staffId, String name, String remark, String staff);

    /**
     * @param page  页码
     * @param rows  行数
     * @param type  分类
     * @param state 状态
     * @param phone
     * @return 特殊人员列表
     * @function 根据分类获得特殊人员列表
     */
    Pagger getUserMonitorListByType(int page, int rows, int type, String state, String phone);

    /**
     * @param state   状态
     * @param name    名字
     * @param remark  备注
     * @param staffid 操作者ID
     * @return 执行状态
     * @function 增加特殊人员分类
     */
    int addUserMonitorType(int state, String name, String remark, int staffid);

    //    编辑特殊人员分类
    int editUserMonitorType(int id, String name, String remark, int state, int staffId);

    //    编辑特殊人员分类
    int updateUserMonitorTypeState(int id, int state, int staffId);

    //    判断特殊人群清单是否属于某个用户
    boolean isMyMonitorType(int id, int staffId);



    //    删除特殊人员分类
    int removeUserMonitorType(int id);

    //    删除特殊人员
    int removeUserMonitorList(Object[] ids);

    List<Map<String, Object>> getMonitorTypeUsers(int tyid);

    //    向红名单中添加用户
    int addUserReadList(Map<String, String> users, Long operator, Long operator_org);

    //    向黑名单中添加用户
    int addUserBlackList(Map<String, String> users, Long operator, Long operator_org);

    //    在红名单中删除用户
    int deleteUserReadList(String[] ids);

    //    在黑名单中删除用户
    int deleteUserBlackList(String[] ids);

    //    统计城市
    Long countCity(String staffId);

    //    插入新的基站信息
    int insertBaseInfo(String staff_id, String city_id, String area_id, String area_name,
                       Date create_date, int is_valid, int area_type, String showType, int baseType);

    //    插入新的围栏信息
    int insertPoint(String areaId, Double lng1, Double lat1, Double lng2, Double lat2, Double lng3, Double lat3, Double lng4, Double lat4);

    //    插入新的圆形围栏信息
    int insertCircle(String areaId, Double lng1, Double lat1, Double radius);

    //   插入导入的基站信息
    int insertLacinfo(String baseid, List<String[]> lacarr);

    //    测试SQL
    List<Map<String, Object>> exeSQL(String sql, Object... param);

    //    查询电子围栏
    Pagger findFence(int page, int rows, boolean isadmin, Integer orgid);

    //    查询桩点
    Pagger findPoint(int page, int rows, String area_id);

    int deleteFence(String area_id);

    int deletePoint(String area_id);

    String findCity(String staff_id);

    Integer findMaxAreaId(String city_id);

    int enables(String area_id);

    int disables(String area_id);


    Map<String, Object> selectConfigValue(String code);

    Pagger log_retention(int page, int rows, String staff_Name, String elec_id, Date operDate1, Date operDate2, String actionName, Integer staffId);

    Pagger checkNumber(int page, int rows, String id);

    Pagger checkNumberByElecId(int page, int rows, String elecid);

    List<Map<String, Object>> getCompany();

    Pagger policeInfo(int page, int rows, String org_name, Date check_time1, Date check_time2, String is_valid);

    Map<String, Object> getOrgMessage(String org_id);

    List<Map<String, Object>> getOrgList();

    //    获取FTP配置列表
    Pagger getFTPConfigList(int page, int rows, String org, String area, String dir, String state);

    //    添加FTP配置
    int addFTPConfig(String org_id, String org_name, String city_id, String city_name, String ip, String username, String password, String local, String dir, int state, int staffId);

    //    编辑FTP配置


    //    编辑FTP配置
    int updateFTPConfig(int id, String ip, String username, String password, String local, String dir, int state, int staffId);

    //    变更FTP启用状态
    int updateFTPConfigState(int[] ids, int state);

    //    删除FTP配置
    int removeFTPConfig(int id);

    List<Map<String, Object>> getPhoneByElecId(String elec_id);

    List<Map<String, Object>> getBaseInfoByBaseId(String lac, String ci);

    List<Map<String, Object>> showTablesName();

    Pagger getUrlList(int page, int rows, boolean admin, Integer staffId);

    com.alibaba.fastjson.JSONObject addUrlRule(String[] url, String[] remarks, Object instaff, Object inorg);

    int delUrlRule(Object[] ids);

    Pagger getSMSLog(int page, int rows, String orgmessage, String staffname, String startime, String endtime, String task, String dis, boolean isAdmin, Integer staffId);

    JSONArray getEuosarList(String org, String status);

    int addEuosar(String org, String aop, String file, Integer staffId, Integer orgId);

    int delEuosar(String[] ids);

    int banEuosar(String[] ids, Boolean ban);

    List<Map<String, Object>> getAlarmList(String taskid, String findate, String findateend, String read, String org, String dis, String staff, boolean isAdmin, Integer staffId);

    List<Map<String, Object>> getRoleList(Integer staffid);

    int updateReadOrBlackUsersState(Object[] idArr, String state, String table);

    List<Map<String, Object>> getAPIInfoList(String name, String remark, String elec, String type);


    int addApiInfo(String api_code, String api_method, String api_name, String api_description, String isdisplay, String iselec, String chtype);

    int editApiInfo(String api_id, String api_code, String api_method, String api_name, String api_description, String isdisplay, String iselec);

    int deleteAPIInfo(String api_id);

    List<Map<String, Object>> checkAPIInfoList(String apiname, String apiInfo, String letterNeed, String jurisdictionNeed, String buff);

    List<Map<String, Object>> getSmsUsers(boolean isadmin, Integer orgid);

    Integer saveLac(String sendData);

    Pagger getPushAPILog(int servic_type, int page, int rows);

    JSONArray getTaskList();

    List getSysDisList();
}
